
import { defineStore } from "pinia";


// pinia注意:
// 1. pinia天生就支持模块化
// 2. pinia中,函数的this当前store实例 => state getters中的数据,actions中的方法都会在store实例上挂载一份 => 取值方便
// 3. pinia中无论是同步方法还是异步方法都写在actions中


// 选项式写法
// defineStore(StoreName,storeOptions)
// StoreName  模块名称 => pinia天生就支持模块化
// storeOptions 模块的配置 选项式写法
export let useDemoStore =  defineStore("demo",{
    state(){
        return {
            a:1,
            b:2,
        }
    },
    getters:{
        doubleA(state){  // state对象
            return state.a * 2;
        },
        doubleB(){  //  this => 当前store实例 => state getters中的数据,actions中的方法都会在store实例上挂载一份 => 取值方便
            return this.b * 2;
        },
        doubleBoth(){
            return this.doubleA + this.doubleB;
        }
    },
    actions:{
        addA(){
            this.a++;
        },
        addAN(n){
            this.a+=n;
        },
        addB(){
            this.b++;
        },
        addA_Async(){
            return new Promise((resolve)=>{
                setTimeout(()=>{
                    this.a++;
                    resolve()
                },1000)
            })
        },
        addB_Async(){
            return new Promise((resolve)=>{
                setTimeout(()=>{
                    this.b++;
                    resolve()
                },1000)
            })
        },
        async addBoth_Async(){
            await this.addA_Async();
            await this.addB_Async();
        }
    }
})